# Create your views here.
from django.forms import ModelForm
from django import forms
from django.shortcuts import render_to_response
from datetime import *
from gestion.ventas.views import Print
from models import *


class EtiquetaForm(forms.Form):
    producto = forms.CharField(max_length=100)
    orden_fabricacion = forms.CharField(max_length=100)
    contenido_neto = forms.FloatField()
    fecha_de_elaboracion = forms.DateField()
    

def etiqueta(request):
	if request.method == 'GET':
		form = 	EtiquetaForm()
		
		
	if request.method == 'POST':
		
		form = EtiquetaForm(request.POST)
		if form.is_valid():
			prod = form.cleaned_data['producto']
			ord_fab = form.cleaned_data['orden_fabricacion']
			cont_neto = form.cleaned_data['contenido_neto']
			fecha_elab = form.cleaned_data['fecha_de_elaboracion']
			printer = Print()
	
        		return render_to_response("etiqueta_print.html", locals())
	return render_to_response("etiqueta_form.html", locals())
	
def lista(request):
  prod = Producto.objects.order_by('familia')
  return render_to_response("productos.html", locals())


class PrecioProductoForm(ModelForm):
    class Meta:
        model = PrecioProducto
        exclude = ('listaprecio','producto','moneda','unidad_medida',)

def update_precio(request,id):
  b = Producto.objects.get(id=id)
  lista = ListaPrecio.objects.get_or_create(inicio_vigencia=datetime.today().date())[0]
  try:
	  a = lista.items.all().get (producto = b)
  except:
	  a = lista.items.create (producto = b, unidad_medida = str(b.unidad_medida), moneda = str(b.moneda), precio_venta = 0, precio_lim1 = 0, precio_lim2 = 0, precio_lim3 = 0)
  
  if request.method == 'GET':
    if a:
      f = PrecioProductoForm(instance=a)
    else:
      f = PrecioProductoForm()
  if request.method == 'POST':
      if a:
        f = PrecioProductoForm(request.POST, instance=a)
      else:
        f = PrecioProductoForm(request.POST)
        f.producto=b
        f.listaprecio = lista
        f.unidad_medida = b.unidad_medida.nombre
        f.moneda = b.moneda.nombre
      
      if f.is_valid():
        if not a:
          pro = f.save(commit= False)
          f = PrecioProductoForm(request.POST)
          pro.producto=b
          pro.listaprecio = lista
          pro.unidad_medida = b.unidad_medida.nombre
          pro.moneda = b.moneda.nombre
          pro.save()
        else:
          f.save()
      
  return render_to_response("update_precios.html", locals())


class CantidadRealForm(ModelForm):
    class Meta:
        model = ItemInventario
        exclude = ('producto','cantidad_esperada','unidad_medida','inventario')
        
def update_cantidad(request,id):
  b = Producto.objects.get(id=id)
  inv = Inventario.objects.get_or_create(fecha=datetime.today().date())[0]
  try:
	  a = inv.iteminv.all().get (producto = b)
  except:
  	  a = inv.iteminv.create(producto = b, unidad_medida = str(b.unidad_medida),  cantidad_real = 0, cantidad_esperada = '')

  if request.method == 'GET':
    if a:
      f = CantidadRealForm(instance=a)
    else:
      f = CantidadRealForm()
  if request.method == 'POST':
      if a:
        f = CantidadRealForm(request.POST, instance=a)
      else:
        f = CantidadRealForm(request.POST)
      if f.is_valid():
        if not a:
          cant = f.save(commit=False)
          cant.producto = prod
          cant.unidad_medida = prod.unidad_medida.nombre
          cant.cantidad_esperada = 0
          cant.inventario = inv
          cant.save()
        else:
          f.save()
          
  return render_to_response("update_precios.html", locals())
      



class ProductoForm(ModelForm):
    class Meta:
        model = Producto
        
def update_producto(request,id):
  
  a = Producto.objects.get(id=id)
  if request.method == 'GET':
    
    f = ProductoForm(instance=a)
  if request.method == 'POST':
      f = ProductoForm(request.POST, instance=a)
      if f.is_valid():
        f.save()
  return render_to_response("update_precios.html", locals())
      
